let
    // aqui é informado a primeira parte da url do link
    http = "https://transwar.lannister.emitir.me/",
    
    // a segunda parte da url, é o "endpoint" da consulta que se quer fazer
    // "incomes/search?",                    // Minutas
    // "nfs/search?",                        // Notas Fiscais
    // "collections/search?",                // Coletas
    // "outcomes/search?",                   // Romaneios
    // "ctes/search?",                       // CTe's
    // "people/search?",                     // Pessoas
    // "vehicles/search?",                   // Veículos
    // "quotations/search?",                 // Cotações
    // "occurrences/search?",                // Ocorrências de CTe
    // "processes/search?",                  // Programação de carga
    // "operations/search?",                 // Operação
    // "fuel-supplies/search?",              // Abastecimento
    // "tires/search?",                      // Pneus
    // "services/search?",                   // Serviços
    // "products/search?",                   // Produtos
    // "service-orders/search?",             // Ordem de Serviço
    // "service-categorizations/search?",    // Categorização de Serviços

    // aqui se define qual endpoint se quer (no caso escolhi Minutas)
    endpoint = "incomes/search?",

    // e aqui se monta a url (o '&' concatena as partes)
    url = http & endpoint & "created_from=2023-09-01",

    //aqui o nº de registros por página
    RegistrosPorPagina = 40,

    // começo da função que acessa o link
    obterResultadoJson = (Url) =>
        let opcoes = [Headers=[ 
                        #"x-api-key" = "75594207-b5d7-43bf-a7c2-571b3030308d",
                        #"Content-Type" = "application/json"
                    ]],
            dadosConteudo = Web.Contents(Url, opcoes),
            dadosJson    = Json.Document(dadosConteudo)
        in  
            dadosJson,
    // fim da função

    // começo da função que pega o total de registros
    obterTotalRegistros = () =>
        let Url   = url,
            Json  = obterResultadoJson(Url),
            quantidade = Json[#"total"] 
        in  
            quantidade,
    // fim da função

    // começo da função que pega os registros de cada página
    obterRegistrosDaPagina = (pagina) =>
        let page  = "&page=" & Text.From(pagina),
            Url   = url & page,
            Json  = obterResultadoJson(Url),
            resultados = Json[#"data"]
        in  
            resultados,
    // fim da função

    // a função List.Max pega o maior valor entre, o "total de registros" e o "nº de registros por página"
    totalRegistros = List.Max({ RegistrosPorPagina, obterTotalRegistros() }),

    // gera o nº de páginas arendondado pra mais
    numeroDePaginas   = Number.RoundUp(totalRegistros / RegistrosPorPagina),

    // cria uma lista com os números das páginas que vão ser lidas
    indicesDasPaginas = { 1 .. numeroDePaginas },

    // faz um looping lendo cada página da lista
    paginas = List.Transform(indicesDasPaginas, each obterRegistrosDaPagina(_)),

    // junta todas as páginas lidas
    paginasUnidas = List.Union(paginas),

    // transforma a lista em tabela
    tabela = Table.FromList(paginasUnidas, Splitter.SplitByNothing(), null, null, ExtraValues.Error),

    // começo da "Power Query" para definir e expandir as colunas da tabela 
    // essa é a parte que deve ser mudada para cada tipo de consulta...(CTe, notas, romaneios, etc.) 

    #"Column1 Expandido1" = Table.ExpandRecordColumn(tabela, "Column1", {"id", "serie", "number", "owner_id", "created_at", "updated_at", "status", "taker", "entry_type", "vehicles", "totals", "requestor", "withdrawal", "receiver", "driver", "outcome"}, {"Column1.id", "Column1.serie", "Column1.number", "Column1.owner_id", "Column1.created_at", "Column1.updated_at", "Column1.status", "Column1.taker", "Column1.entry_type", "Column1.vehicles", "Column1.totals", "Column1.requestor", "Column1.withdrawal", "Column1.receiver", "Column1.driver", "Column1.outcome"}),
    #"Column1.vehicles Expandido" = Table.ExpandRecordColumn(#"Column1 Expandido1", "Column1.vehicles", {"traction"}, {"Column1.vehicles.traction"}),
    #"Column1.totals Expandido" = Table.ExpandRecordColumn(#"Column1.vehicles Expandido", "Column1.totals", {"total"}, {"Column1.totals.total"}),
    #"Column1.requestor Expandido" = Table.ExpandRecordColumn(#"Column1.totals Expandido", "Column1.requestor", {"id", "name"}, {"Column1.requestor.id", "Column1.requestor.name"}),
    #"Column1.withdrawal Expandido" = Table.ExpandRecordColumn(#"Column1.requestor Expandido", "Column1.withdrawal", {"id", "name", "address"}, {"Column1.withdrawal.id", "Column1.withdrawal.name", "Column1.withdrawal.address"}),
    #"Column1.withdrawal.address Expandido" = Table.ExpandRecordColumn(#"Column1.withdrawal Expandido", "Column1.withdrawal.address", {"city", "state"}, {"Column1.withdrawal.address.city", "Column1.withdrawal.address.state"}),
    #"Column1.withdrawal.address.city Expandido" = Table.ExpandRecordColumn(#"Column1.withdrawal.address Expandido", "Column1.withdrawal.address.city", {"name"}, {"Column1.withdrawal.address.city.name"}),
    #"Column1.withdrawal.address.state Expandido" = Table.ExpandRecordColumn(#"Column1.withdrawal.address.city Expandido", "Column1.withdrawal.address.state", {"uf"}, {"Column1.withdrawal.address.state.uf"}),
    #"Column1.receiver Expandido" = Table.ExpandRecordColumn(#"Column1.withdrawal.address.state Expandido", "Column1.receiver", {"id", "name", "address"}, {"Column1.receiver.id", "Column1.receiver.name", "Column1.receiver.address"}),
    #"Column1.receiver.address Expandido" = Table.ExpandRecordColumn(#"Column1.receiver Expandido", "Column1.receiver.address", {"city", "state"}, {"Column1.receiver.address.city", "Column1.receiver.address.state"}),
    #"Column1.receiver.address.city Expandido" = Table.ExpandRecordColumn(#"Column1.receiver.address Expandido", "Column1.receiver.address.city", {"name"}, {"Column1.receiver.address.city.name"}),
    #"Column1.receiver.address.state Expandido" = Table.ExpandRecordColumn(#"Column1.receiver.address.city Expandido", "Column1.receiver.address.state", {"uf"}, {"Column1.receiver.address.state.uf"}),
    #"Column1.driver Expandido" = Table.ExpandRecordColumn(#"Column1.receiver.address.state Expandido", "Column1.driver", {"id", "name"}, {"Column1.driver.id", "Column1.driver.name"}),
    #"Column1.outcome Expandido" = Table.ExpandRecordColumn(#"Column1.driver Expandido", "Column1.outcome", {"id", "number"}, {"Column1.outcome.id", "Column1.outcome.number"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Column1.outcome Expandido",{{"Column1.id", Int64.Type}, {"Column1.serie", Int64.Type}, {"Column1.number", Int64.Type}, {"Column1.owner_id", Int64.Type}, {"Column1.created_at", type datetime}, {"Column1.updated_at", type datetime}, {"Column1.status", Int64.Type}, {"Column1.taker", Int64.Type}, {"Column1.entry_type", Int64.Type}, {"Column1.vehicles.traction", type text}, {"Column1.totals.total", Int64.Type}, {"Column1.requestor.id", Int64.Type}, {"Column1.requestor.name", type text}, {"Column1.withdrawal.id", Int64.Type}, {"Column1.withdrawal.name", type text}, {"Column1.withdrawal.address.city.name", type text}, {"Column1.withdrawal.address.state.uf", type text}, {"Column1.receiver.id", Int64.Type}, {"Column1.receiver.name", type text}, {"Column1.receiver.address.city.name", type text}, {"Column1.receiver.address.state.uf", type text}, {"Column1.driver.id", Int64.Type}, {"Column1.driver.name", type text}, {"Column1.outcome.id", Int64.Type}, {"Column1.outcome.number", Int64.Type}})
    
    // final da "Power Query"  

in
    #"Tipo Alterado"